DearMiku

HTTP 2.0

字数统计: 804阅读时长: 2 min
2017/11/22 Share

HTTP 2.0

HTTP 1.0 缺点

在http 1.0 时,每进行一次请求时,都会建立一次TCP连接,开销很大

HTTP 1.1 缺点

HTTP Pipelining(http管线技术)

在http1.1中默认是启用该技术的,即消息头中:Connection:keep-alive.

HTTP Pipelining其实是把多个HTTP请求放到一个TCP连接中一一发送,而在发送过程中不需要等待服务器对前一个请求的响应;只不过,客户端还是要按照发送请求的顺序来接收响应。这样就像在串行队列中执行任务一样,若前一个任务十分耗时,则会导致后续的响应卡顿.这就是所谓的线头卡顿(Head of line blocking).

请求数量

浏览器客户端在同一时间,针对同一域名下的请求有一定数量限制。超过限制数目的请求会被阻塞

数据大小

HTTP1.1的格式为文本格式,难以优化. 大量相似http请求时,会发送大量一样的消息头,导致流量浪费.(跟json 与 protocolBuf)

服务端无法主动推送资源至服务端

HTTP 2.0

数据格式

HTTP 2.0 使用新的二进制格式:基本的协议单位是帧,每个帧都有不同的类型和用途,规范中定义了10种不同的帧。例如,报头(HEADERS)和数据(DATA)帧组成了基本的HTTP 请求和响应;其他帧例如 设置(SETTINGS),窗口更新(WINDOW_UPDATE), 和推送承诺(PUSH_PROMISE)是用来实现HTTP/2的其他功能。那些请求和响应的帧数据通过流来进行数据交换。新的二进制格式是流量控制、优先级、server push等功能的基础.

单一连接,多路复用

http2.0 允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。可以理解为在单一的TCP链接中,并发请求响应.

在TCP链接时,并不是一开始就到达最大传输速度,因为若带宽不足,一开始高速则会导致阻塞.而是随着时间推移逐渐提速,最后达到适合的速度.这叫做TCP的慢启动. 而这对于HTTP这种突发性,短时性的链接会十分低效.

首部压缩

http2.0是用了专门为头部压缩而设计的算法,减少冗余数据的传输.

服务端推送

服务端推送是一种在客户端请求之前发送数据的机制,在HTTP 2.0中,服务端可以对客户端的一个请求发送多个响应.这样可以在客户端下次请求时直接返回推送的缓存.

同类协议

SPDY的特性基本和Http 2.0相同,因为http2.0就是收spdy的启发设计的. 主要不同在于对传输数据使用gzip进行压缩.

iOS端使用

在iOS下,NSURLSession适配了http2.0的,所以我们可以无感的使用他,而不需要做额外的适配,主要是服务器的配置.

参考链接:

iOS HTTP/2 Server Push 探索
http2.0讲解
关于 iOS HTTP2.0 的一次学习实践

CATALOG
  1. 1. HTTP 2.0
    1. 1.1. HTTP 1.0 缺点
    2. 1.2. HTTP 1.1 缺点
      1. 1.2.1. HTTP Pipelining(http管线技术)
      2. 1.2.2. 请求数量
      3. 1.2.3. 数据大小
      4. 1.2.4. 服务端无法主动推送资源至服务端
    3. 1.3. HTTP 2.0
      1. 1.3.1. 数据格式
      2. 1.3.2. 单一连接,多路复用
      3. 1.3.3. 首部压缩
      4. 1.3.4. 服务端推送
      5. 1.3.5. 同类协议
      6. 1.3.6. iOS端使用
    4. 1.4. 参考链接: